/**
 * @fileOverview 格式化操作类
 * @author <a href=”www.liujto.com”>liujto</a>
 * @createDate  2019-10-10
 * @copyright https://www.liujto.com
 * @version 1.0
 */

/**
 * 格式化为数字
 * @param {String} n 
 */
function FormatTimeNumber(n) {
    n = n.toString()
    return n[1] ? n : '0' + n
}
/**
 * 格式化时间格式
 * @param {Stirng|Date} _date 需要格式化的时间
 * @param {String} _init 格式规范
 */
function FormatTime(_date, _init) {
    if ((typeof _date).toUpperCase() != "OBJECT") {
        
        _date = _date.replace('年', '-').replace('月', '').replace('日', ' ')
        
        try {
            _date = _IosTime(_date)
            _date = new Date(_date);
        } catch {
            _date = new Date();
        }

    }
    var year = FormatTimeNumber(_date.getFullYear());
    var month = FormatTimeNumber(_date.getMonth() + 1);
    var day = FormatTimeNumber(_date.getDate());
    var hour = FormatTimeNumber(_date.getHours());
    var minute = FormatTimeNumber(_date.getMinutes());
    var second = FormatTimeNumber(_date.getSeconds());
    var result = _init.replace('yyyy', year).replace('MM', month).replace('dd', day).replace('HH', hour).replace('mm', minute).replace('ss', second);
    return result;
}
//IOS时间类型处理
function _IosTime(dateObj) {

    dateObj = dateObj.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/(-)/g, '/')
    if (dateObj.indexOf(".") > 0) dateObj = dateObj.slice(0, dateObj.indexOf("."))

    return new Date(dateObj);
}
/**
 * 转化秒为00:00:00格式
 * @param {Number|String} value 需要转换的秒
 */
function FormatSeconds(value) {
    var secondTime = parseInt(value); // 秒

    var minuteTime = 0; // 分
    var hourTime = 0; // 小时
    if (secondTime > 60) { //如果秒数大于60，将秒数转换成整数
        //获取分钟，除以60取整数，得到整数分钟
        minuteTime = parseInt(secondTime / 60);
        //获取秒数，秒数取佘，得到整数秒数
        secondTime = parseInt(secondTime % 60);
        //如果分钟大于60，将分钟转换成小时
        if (minuteTime > 60) {
            //获取小时，获取分钟除以60，得到整数小时
            hourTime = parseInt(minuteTime / 60);
            //获取小时后取佘的分，获取分钟除以60取佘的分
            minuteTime = parseInt(minuteTime % 60);
        }
    }
    secondTime = parseInt(secondTime);
    var result = (secondTime >= 9 ? secondTime : '0' + secondTime)

    if (minuteTime > 0) {
        result = (minuteTime >= 9 ? minuteTime : '0' + minuteTime) + ":" + result;
    } else {
        result = "00:" + result;
    }
    if (hourTime > 0) {
        result = (hourTime >= 9 ? hourTime : '0' + hourTime) + ":" + result;
    } else {
        result = "00:" + result;
    }
    return result;
}
/**
 * 金额转数字
 * @param {String} s 金额 
 */
function MoneyToNumber(s) {
    return parseFloat(s.replace(/[^\d\.-]/g, ""));
}
/**
 * 数字转金额为国际格式
 * @param {Number} s 需要转化的数字
 * @param {Number} type 0末尾补零 1末尾不补零 
 */
function FormatMoney(s, type) {
    if (/[^0-9\.]/.test(s))
        return "0.00";
    if (s == null || s == "null" || s == "")
        return "0.00";
    s = s.toString().replace(/^(\d*)$/, "$1.");
    s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
    s = s.replace(".", ",");
    var re = /(\d)(\d{3},)/;
    while (re.test(s))
        s = s.replace(re, "$1,$2");
    s = s.replace(/,(\d\d)$/, ".$1");

    if (!type || type == 0) {
        var a = s.split(".");
        if (a[1] == "00") {
            s = a[0];
        }
    }
    return s;
}
function FormatSizeLen(_val,_is_util){
    _is_util=_is_util || 0;//是否拼接单位 如果为0 则返回数组 第一个为大小 第二个为单位
    var val=(Number(_val) || 0).toFixed(2)
    if(val<1024) {
        return ReturnSizeLen(val,'K',_is_util);
    }
    val=val/1024
    if(val<1024) {
        return ReturnSizeLen(val,'M',_is_util);
    }
    val=val/1024
    if(val<1024) {
        return ReturnSizeLen(val,'G',_is_util);
    }
    val=val/1024 
    if(val<1024) {
        return ReturnSizeLen(val,'T',_is_util);
    }
}
function ReturnSizeLen(_val,_util,_is_util){
    if(_is_util==1) {
        return _val+_util
    }
    return [_val,_util]
}
export default {
    ToTimeNumber: FormatTimeNumber, //格式化为时间数字
    ToTime: FormatTime, //格式化时间格式
    ToSeconds: FormatSeconds, //转化秒为00:00:00格式
    MoneyToNumber: MoneyToNumber, //金额转数字
    ToMoney:FormatMoney,//数字转金额格式
    ToSizeLen:FormatSizeLen,//转换字节
}